import request from '@/utils/request';
import qs from 'qs';
import type { ResponseData } from '../typing';
// 参数接口
export interface GetOrderPageParams {
    // 当前第几页(默认1) */
    current?: number;
    // 每页条数(默认20) */
    size?: number;
    // 项目CODE集合 */
    projectCode?: Record<string, unknown>[];
    // 工单编号 */
    orderNum?: string;
    // 客户姓名/电话 */
    nameOrPhone?: string;
    // 工单类型，0报修、1投诉 */
    orderType?: number;
    // 工单分类ID */
    orderClassifyId?: number;
    // 条线 */
    orderProfessionalLine?: string;
    // 负责人 */
    orderChargePerson?: string;
    // 提报开始时间 */
    orderTimeStart?: Record<string, unknown>;
    // 提报结束时间 */
    orderTimeEnd?: Record<string, unknown>;
    // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
    orderState?: number;
    // 工单来源（字典项），来访、来电等 */
    orderSource?: string;
    // 工单属性，0业主提报、1员工提报、2员工替报 */
    orderProperty?: number;
    // 流程类型ID（流程配置表的ID） */
    flowType?: number;
    // 提交审核开始时间 */
    flowStartTimeStart?: Record<string, unknown>;
    // 提交审核结束时间 */
    flowStartTimeEnd?: Record<string, unknown>;
    // 接单开始时间 */
    taskingTimeStart?: Record<string, unknown>;
    // 接单结束时间 */
    taskingTimeEnd?: Record<string, unknown>;
    // 是否及时接单，0否1是 */
    taskingTimely?: number;
    // 责任归属，0物业、1地产 */
    orderChargeCompany?: number;
    // 得分 */
    score?: Record<string, unknown>;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
            // 主键 */
            id?: Record<string, unknown>;
            // 工单编号 */
            orderNum?: string;
            // 项目CODE */
            projectCode?: string;
            // 项目名 */
            projectName?: string;
            // 楼层ID */
            floorId?: Record<string, unknown>;
            // 房产ID */
            propertyId?: Record<string, unknown>;
            // 房产号 */
            propertyRoom?: string;
            // 业主ID */
            propertyOwnerId?: Record<string, unknown>;
            // 业主 */
            propertyOwner?: string;
            // 业主电话 */
            propertyPhone?: string;
            // 联系人 */
            contactPerson?: string;
            // 联系人电话 */
            contactPersonPhone?: string;
            // 工单类型，0报修、1投诉 */
            orderType?: Record<string, unknown>;
            // 工单子类，0户内报修、1公区报修 */
            orderTypeSub?: string;
            // 工单分类ID */
            orderClassifyId?: Record<string, unknown>;
            // 工单分类名 */
            orderClassifyName?: string;
            // 条线 */
            orderProfessionalLine?: string;
            // 提报时间 */
            orderTime?: string;
            // 工单内容 */
            content?: string;
            // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
            orderState?: Record<string, unknown>;
            // 工单完成原因，0关单、1强制关单、2作废 */
            orderFinishReason?: Record<string, unknown>;
            // 工单来源（字典项），来访、来电等 */
            orderSource?: string;
            // 工单属性，0业主提报、1员工提报、2员工替报 */
            orderProperty?: Record<string, unknown>;
            // 负责人ID */
            orderChargePersonId?: Record<string, unknown>;
            // 负责人 */
            orderChargePerson?: string;
            // 接单时间 */
            taskingTime?: string;
            // 是否及时接单，0否1是 */
            taskingTimely?: Record<string, unknown>;
            // 责任归属，0物业、1地产 */
            orderChargeCompany?: Record<string, unknown>;
            // 得分 */
            score?: Record<string, unknown>;
            // 工单归属，0业主工单、1租户工单 */
            orderAscription?: Record<string, unknown>;
            // 租户ID，如果是租户工单 */
            renterId?: Record<string, unknown>;
            // 转单次数 */
            transferNum?: Record<string, unknown>;
            // 回访状态，0无需回访、1未回访、2已回访 */
            visitState?: Record<string, unknown>;
            // 流程ID（流程表的ID） */
            flowId?: Record<string, unknown>;
            // 流程类型ID（流程配置表的ID） */
            flowType?: Record<string, unknown>;
            // 提交审核日期 */
            flowStartTime?: string;
            // 审核完成日期 */
            flowEndTime?: string;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetOrderPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            // 主键 */
            id: number;
            // 工单编号 */
            orderNum: string;
            // 项目名 */
            projectName: string;
            // 房产号 */
            propertyRoom: string;
            // 业主 */
            propertyOwner: string;
            // 业主电话 */
            propertyPhone: string;
            // 联系人 */
            contactPerson: string;
            // 联系人电话 */
            contactPersonPhone: string;
            // 工单类型，0报修、1投诉 */
            orderType: number;
            // 工单子类，0户内报修、1公区报修 */
            orderTypeSub: string;
            // 工单分类名 */
            orderClassifyName: string;
            // 条线 */
            orderProfessionalLine: string;
            // 提报时间 */
            orderTime: Record<string, unknown>;
            // 工单内容 */
            content: string;
            // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
            orderState: number;
            // 工单来源（字典项），来访、来电等 */
            orderSource: string;
            // 负责人 */
            orderChargePerson: string;
            // 接单时间 */
            taskingTime: Record<string, unknown>;
            // 是否及时接单，0否1是 */
            taskingTimely: number;
            // 责任归属，0物业、1地产 */
            orderChargeCompany: number;
            // 得分 */
            score: Record<string, unknown>;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
/**
 * 获得分页（除审核外）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function getOrderPage(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/page`, params);
}
/**
 * 获得分页（回访工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function pageVisit(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pageVisit`, params);
}
/**
 * 获得分页（知会工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成、7作废、8强制关单
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {number} params.spotCheck 抽检状态，0未抽检、1已抽检
 * @param {object} params.page
 * @returns
 * @returns
 */
export function pageNotify(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pageNotify`, params);
}
/**
 * 获得分页（抽检工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成、7作废、8强制关单
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {number} params.spotCheck 抽检状态，0未抽检、1已抽检
 * @param {object} params.page
 * @returns
 */
export function pageCheck(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pageCheck`, params);
}
/**
 * 获得分页（地产工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function pageProperty(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pageProperty`, params);
}
/**
 * 获得分页（待审核）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function pagePendingReview(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pagePendingReview`, params);
}
/**
 * 获得分页（已审核）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function pageApproved(params: GetOrderPageParams): Promise<GetOrderPageRes> {
    return request.post(`/yfwy/order/pageApproved`, params);
}
// 参数接口
export interface VisitOrderParams {
    // 工单主键 */
    orderId: number;
    // 附件 */
    visitRecord?: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
    // 工单说明 */
    visitContent: string;
}
/**
 * 工单回访
 * @param {object} params 管理后台 - 工单回访
 * @param {number} params.orderId 工单主键
 * @param {array} params.visitRecord 附件
 * @param {string} params.visitContent 工单说明
 * @returns
 */
export function visitOrder(params: VisitOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/visitOrder`, params);
}
// 参数接口
export interface SpotCheckOrderParams {
    /*工单主键 */
    orderId: number;

    /*是否合格,0否1是 */
    checkResult: number;

    /*附件 */
    checkRecord?: {
        /*查看地址 */
        viewAddress: string;

        /*旧文件名 */
        oldName: string;

        /*新文件名 */
        newName?: string;

        /*文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;

        /*附件类型，0图片、1视频、2音频 */
        fileType?: Record<string, unknown>;
    }[];

    /*不合格说明 */
    checkContent?: string;
}
/**
 * 工单抽检
 * @param {object} params 管理后台 - 工单抽检
 * @param {number} params.orderId 工单主键
 * @param {number} params.checkResult 是否合格,0否1是
 * @param {array} params.checkRecord 附件
 * @param {string} params.checkContent 不合格说明
 * @returns
 */
export function spotCheckOrder(params: SpotCheckOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/spotCheckOrder`, params);
}
// 参数接口
export interface NotifyOrderParams {
    /*工单主键 */
    orderId: number;
    /*知会人员信息 */
    userList: {
        /*用户ID */
        id?: Record<string, unknown>;
        /*用户名 */
        name?: string;
    }[];
}
/**
 * 知会
 * @param {object} params 管理后台 - 知会
 * @param {number} params.orderId 工单主键
 * @param {array} params.userList 知会人员信息
 * @returns
 */
export function notifyOrder(params: NotifyOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/notifyOrder`, params);
}
// 参数接口
export interface UrgeOrderParams {
    // 工单主键 */
    orderId: number;
    // 工单状态 */
    orderState: number;
}
/**
 * 催单
 * @param {object} params 管理后台 - 催单
 * @param {number} params.orderId 工单主键
 * @param {number} params.orderState 工单状态
 * @returns
 */
export function urgeOrder(params: UrgeOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/urgeOrder`, params);
}
// 参数接口
export interface ForceCloseOrderParams {
    // 工单主键 */
    orderId: number;
    // 附件 */
    forceCloseFiles?: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
    // 强制关单说明 */
    content: string;
}
/**
 * 强制关单
 * @param {object} params 管理后台 - 强制关单
 * @param {number} params.orderId 工单主键
 * @param {array} params.forceCloseFiles 附件
 * @param {string} params.content 强制关单说明
 * @returns
 */
export function forceCloseOrder(params: ForceCloseOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/forceCloseOrder`, params);
}
/**
 * 导出 Excel
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {number} params.flowType 流程类型ID（流程配置表的ID）
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {object} params.score 得分
 * @param {object} params.page
 * @returns
 */
export function exportOrderExcel(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/export-excel`, params, {
        responseType: 'blob',
    });
}
// 响应接口
export interface GetTypeAndNumRes {
    code: number;
    data: {
        // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
        orderState: number;
        // 工单状态名 */
        orderStateName: string;
        // 数量 */
        num: number;
    }[];
    msg: string;
}
/**
 * 获取各分类及数量
 * @param {array} params string
 * @returns
 */
export function getTypeAndNum(params: any[]): Promise<GetTypeAndNumRes> {
    return request.post(`/yfwy/order/getTypeAndNum`, params);
}
// 参数接口
export interface CloseOrderParams {
    // 工单主键 */
    orderId: number;
    // 附件 */
    afterProcessFiles: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
    // 附件 */
    confirmFiles: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
    // 处理详情 */
    detailContent: string;
    // 责任归属，0物业、1地产 */
    orderChargeCompany: number;
}
// 响应接口
export interface CloseOrderRes {
    code: number;
    data: boolean;
    msg: string;
}
/**
 * 关单
 * @param {object} params 管理后台 - 关单
 * @param {number} params.orderId 工单主键
 * @param {array} params.afterProcessFiles 附件
 * @param {array} params.confirmFiles 附件
 * @param {string} params.detailContent 处理详情
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @returns
 */
export function closeOrder(params: CloseOrderParams): Promise<CloseOrderRes> {
    return request.post(`/yfwy/order/closeOrder`, params);
}
// 参数接口
export interface CancelOrderParams {
    // 工单主键 */
    orderId: number;
    // 作废原因字典value */
    reasonValue: string;
    // 作废原因字典label */
    reasonLabel: string;
    // 作废说明 */
    content: string;
}
/**
 * 作废
 * @param {object} params 管理后台 - 强制关单
 * @param {number} params.orderId 工单主键
 * @param {string} params.reasonValue 作废原因字典value
 * @param {string} params.reasonLabel 作废原因字典label
 * @param {string} params.content 作废说明
 * @returns
 */
export function cancelOrder(params: CancelOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/cancelOrder`, params);
}
/**
 * 接单
 * @param {string} id
 * @returns
 */
export function takeOrder(id: number): Promise<ResponseData<boolean>> {
    return request.get(`/yfwy/order/takeOrder/${id}`);
}
// 响应接口
export interface GetTakingPersonUpgradeRes {
    code: number;
    data: {
        // 用户ID */
        id: number;
        // 用户名 */
        name: string;
    }[];
    msg: string;
}
// 响应接口
export interface GetTakingPersonRes {
    code: number;
    data: {
        // 用户ID */
        id: number;
        // 用户名 */
        name: string;
    }[];
    msg: string;
}
// 参数接口
export interface GetTakingPersonParams {
    // 工单主键 */
    orderId: number;
    // 条线 */
    orderProfessionalLine: string;
}
/**
 * 转单-获取接单人列表
 * @param {object} params 管理后台 - 根据分类和条线获取人员列表
 * @param {number} params.orderId 工单主键
 * @param {string} params.orderProfessionalLine 条线
 * @returns
 */
export function getTakingPerson(params: GetTakingPersonParams): Promise<GetTakingPersonRes> {
    return request.post(`/yfwy/order/getTakingPerson`, params);
}
/**
 * 转单-获取接单人列表（处理中，转项目负责人为是）
 * @param {object} params 管理后台 - 根据分类和条线获取人员列表
 * @param {number} params.orderId 工单主键
 * @param {string} params.orderProfessionalLine 条线
 * @returns
 */
export function getTakingPersonUpgrade(params: GetTakingPersonParams): Promise<GetTakingPersonUpgradeRes> {
    return request.post(`/yfwy/order/getTakingPersonUpgrade`, params);
}
// 参数接口
export interface TransferOrderCLZParams {
    // 工单主键 */
    orderId: number;
    // 负责人ID */
    orderChargePersonId: number;
    // 负责人 */
    orderChargePerson: string;
    // 条线 */
    orderProfessionalLine: string;
    // 旧工单分类名 */
    orderClassifyNameOld: string;
    // 工单分类ID */
    orderClassifyId?: number;
    // 工单分类名 */
    orderClassifyName?: string;
    // 是否转项目负责人，0否1是 */
    upgradeHandler?: number;
    // 旧负责人ID */
    orderChargePersonIdOld: number;
    // 旧负责人 */
    orderChargePersonOld: string;
}
/**
 * 转单-处理中
 * @param {object} params 管理后台 - 转单
 * @param {number} params.orderId 工单主键
 * @param {number} params.orderChargePersonId 负责人ID
 * @param {string} params.orderChargePerson 负责人
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderClassifyNameOld 旧工单分类名
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderClassifyName 工单分类名
 * @param {number} params.upgradeHandler 是否转项目负责人，0否1是
 * @param {number} params.orderChargePersonIdOld 旧负责人ID
 * @param {string} params.orderChargePersonOld 旧负责人
 * @returns
 */
export function transferOrderCLZ(params: TransferOrderCLZParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/transferOrderCLZ`, params);
}
// 参数接口
export interface TransferOrderDJDParams {
    // 工单主键 */
    orderId: number;
    // 负责人ID */
    orderChargePersonId: number;
    // 负责人 */
    orderChargePerson: string;
    // 条线 */
    orderProfessionalLine: string;
}
/**
 * 转单-待接单
 * @param {object} params 管理后台 - 转单
 * @param {number} params.orderId 工单主键
 * @param {number} params.orderChargePersonId 负责人ID
 * @param {string} params.orderChargePerson 负责人
 * @param {string} params.orderProfessionalLine 条线
 * @returns
 */
export function transferOrderDJD(params: TransferOrderDJDParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/transferOrderDJD`, params);
}
// 参数接口
export interface UpdateClassifyParams {
    // 工单主键 */
    orderId: number;
    // 条线 */
    orderProfessionalLine: string;
    // 旧工单分类名 */
    orderClassifyNameOld: string;
    // 工单分类ID */
    orderClassifyId: number;
    // 工单分类名 */
    orderClassifyName: string;
    // 修改原因 */
    reason?: string;
}
/**
 * 修改分类
 * @param {object} params 管理后台 - 工单分类
 * @param {number} params.orderId 工单主键
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderClassifyNameOld 旧工单分类名
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderClassifyName 工单分类名
 * @param {string} params.reason 修改原因
 * @returns
 */
export function updateClassify(params: UpdateClassifyParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/updateClassify`, params);
}
// 响应接口
export interface GetOrderRes {
    code: number;
    data: {
        // 主键 */
        id: number;
        // 工单类型，0报修、1投诉 */
        orderType: number;
        // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
        orderState: number;
        // 负责人ID */
        orderChargePersonId: number;
        // 负责人 */
        orderChargePerson: string;
        // 工单编号 */
        orderNum: string;
        // 项目名 */
        projectName: string;
        // 工单属性，0业主提报、1员工提报、2员工替报 */
        orderProperty: number;
        // 房产号 */
        propertyRoom: string;
        // 提报时间 */
        orderTime: Record<string, unknown>;
        // 业主 */
        propertyOwner: string;
        // 业主电话 */
        propertyPhone: string;
        // 联系人 */
        contactPerson: string;
        // 联系人电话 */
        contactPersonPhone: string;
        // 工单子类，0户内报修、1公区报修 */
        orderTypeSub: string;
        // 工单分类名 */
        orderClassifyName: string;
        // 接单时间 */
        taskingTime: Record<string, unknown>;
        // 工单内容 */
        content: string;
        // 问题附件列表 */
        fileList: {
            // 查看地址 */
            viewAddress: string;
            // 旧文件名 */
            oldName: string;
            // 新文件名 */
            newName: string;
            // 文件大小,单位：Mb */
            totalSize: number;
        }[];
        instanceVO: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            // 流程实例主键 */
            id: number;
            // 工单ID */
            orderId: number;
            // 流程定义ID */
            processId: number;
            // 申请原因 */
            reason: string;
            // 说明 */
            content: string;
            // 文件集合 */
            fileList: {
                // 查看地址 */
                viewAddress: string;
                // 旧文件名 */
                oldName: string;
                // 新文件名 */
                newName: string;
                // 文件大小,单位：Mb */
                totalSize: number;
            }[];
            // 流程节点 */
            recordList: {
                // 流程节点主键 */
                id: number;
                // 审批人ID */
                userId: number;
                // 审批人姓名 */
                userName: string;
                // 审批人角色名 */
                roleName: string;
                // 审批意见 */
                approveOpinion: string;
                // 审批状态，0：待审批、1：通过、2：驳回 */
                state: number;
                // 审批时间 */
                approveTime: Record<string, unknown>;
                // 备注 */
                remark: string;
            }[];
        };
        // 工单历史，除审批中、审批完成外使用 */
        recordVO: {
            // 工单ID */
            orderId: number;
            // 操作名称 */
            title: string;
            // 操作类型，0：创建工单、1：催单、2：转单-待接单、3：转单-处理中、4：修改分类、5：接单、6：工单跟进、7：转地产、8：转物业、9：转投诉、10：转保修、11：关单、12：强制关单、13：作废、14：评价、15：重开、16：审核、17：回访 */
            type: number;
            // 操作类型名字 */
            typeStr: string;
            // 操作人 */
            operateName: string;
            // 操作时间 */
            operateTime: Record<string, unknown>;
            // 操作内容，每个类型的内容不同 */
            content: Record<string, unknown>;
        }[];
    };
    msg: string;
}
/**
 * 获取详情
 * @param {string} id
 * @returns
 */
export function getOrder(id: number): Promise<GetOrderRes> {
    return request.get(`/yfwy/order/get/${id}`);
}
// 响应接口
export interface GetOrderRecordRes {
    code: number;
    data: {
        // 工单ID */
        orderId: number;
        // 操作名称 */
        title: string;
        // 操作类型，0：创建工单、1：催单、2：转单-待接单、3：转单-处理中、4：修改分类、5：接单、6：工单跟进、7：转地产、8：转物业、9：转投诉、10：转保修、11：关单、12：强制关单、13：作废、14：评价、15：重开、16：审核、17：回访 */
        type: number;
        // 操作类型名字 */
        typeStr: string;
        // 操作人 */
        operateName: string;
        // 操作时间 */
        operateTime: Record<string, unknown>;
        // 操作内容，每个类型的内容不同 */
        content: Record<string, unknown>;
    }[];
    msg: string;
}
/**
 * 获得工单流转记录
 * @param {string} orderId
 * @returns
 */
export function getOrderRecord(orderId: number): Promise<GetOrderRecordRes> {
    return request.get(`/yfwy/order-record/get/${orderId}`);
}
// 参数接口
export interface FollowOrderParams {
    // 工单主键 */
    orderId: number;
    // 附件 */
    followRecord: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
    // 跟进说明 */
    followContent: string;
    followType: number;
    followTime: string;
}
/**
 * 工单跟进
 * @param {object} params 管理后台 - 工单跟进
 * @param {number} params.orderId 工单主键
 * @param {array} params.followRecord 附件
 * @param {string} params.followContent 跟进说明
 * @param {string} params.followType 跟进途径
 * @param {string} params.followTime 跟进时间
 * @returns
 */
export function followOrder(params: FollowOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/followOrder`, params);
}
// 参数接口
export interface RejectParams {
    // 工单ID */
    orderId: number;
    // 流程定义ID */
    instanceId: number;
    // 流程节点ID */
    recordId: number;
    // 审批意见 */
    approveOpinion?: string;
}
/**
 * 审批驳回
 * @param {object} params 管理后台 - 审批记录更新 Request VO
 * @param {number} params.orderId 工单ID
 * @param {number} params.instanceId 流程定义ID
 * @param {number} params.recordId 流程节点ID
 * @param {string} params.approveOpinion 审批意见
 * @returns
 */
export function reject(params: RejectParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/process-record/reject`, params);
}
// 参数接口
export interface PassParams {
    // 工单ID */
    orderId: number;
    // 流程定义ID */
    instanceId: number;
    // 流程节点ID */
    recordId: number;
    // 审批意见 */
    approveOpinion?: string;
}
/**
 * 审批通过
 * @param {object} params 管理后台 - 审批记录更新 Request VO
 * @param {number} params.orderId 工单ID
 * @param {number} params.instanceId 流程定义ID
 * @param {number} params.recordId 流程节点ID
 * @param {string} params.approveOpinion 审批意见
 * @returns
 */
export function pass(params: PassParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/process-record/pass`, params);
}
// 参数接口
export interface CreateOrderParams {
    // 工单类型，0报修、1投诉 */
    orderType: number;
    // 工单属性，0业主提报、1员工提报、2员工替报 */
    orderProperty: number;
    // 项目CODE */
    projectCode: string;
    // 项目名 */
    projectName: string;
    // 楼层ID */
    floorId?: number;
    // 房产ID */
    propertyId?: number;
    // 房产号 */
    propertyRoom?: string;
    // 业主ID */
    propertyOwnerId?: number;
    // 业主名字 */
    propertyOwner?: string;
    // 业主电话 */
    propertyPhone: string;
    // 联系人 */
    contactPerson?: string;
    // 联系人电话 */
    contactPersonPhone?: string;
    // 工单子类，0户内报修、1公区报修 */
    orderTypeSub?: string;
    // 条线（分类接口中获取） */
    orderProfessionalLine: string;
    // 具体工单分类ID */
    orderClassifyId: number;
    // 具体工单分类名 */
    orderClassifyName: string;
    // 工单内容 */
    content: string;
    // 工单来源（字典项），来访、来电 */
    orderSource: string;
    // 工单归属，0业主工单、1租户工单 */
    orderAscription?: number;
    // 附件 */
    fileList?: {
        // 查看地址 */
        viewAddress: string;
        // 旧文件名 */
        oldName: string;
        // 新文件名 */
        newName?: string;
        // 文件大小,单位：Mb */
        totalSize?: Record<string, unknown>;
    }[];
}
/**
 * 创建
 * @param {object} params 管理后台 - 创建工单
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {string} params.projectCode 项目CODE
 * @param {string} params.projectName 项目名
 * @param {number} params.floorId 楼层ID
 * @param {number} params.propertyId 房产ID
 * @param {string} params.propertyRoom 房产号
 * @param {number} params.propertyOwnerId 业主ID
 * @param {string} params.propertyOwner 业主名字
 * @param {string} params.propertyPhone 业主电话
 * @param {string} params.contactPerson 联系人
 * @param {string} params.contactPersonPhone 联系人电话
 * @param {string} params.orderTypeSub 工单子类，0户内报修、1公区报修
 * @param {string} params.orderProfessionalLine 条线（分类接口中获取）
 * @param {number} params.orderClassifyId 具体工单分类ID
 * @param {string} params.orderClassifyName 具体工单分类名
 * @param {string} params.content 工单内容
 * @param {string} params.orderSource 工单来源（字典项），来访、来电
 * @param {number} params.orderAscription 工单归属，0业主工单、1租户工单
 * @param {array} params.fileList 附件
 * @returns
 */
export function createOrder(params: CreateOrderParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/create`, params);
}
/**
 * 导出Excel（除审核外）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {object} params.page
 * @returns
 */
export function exportExcel(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcel`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（回访工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {object} params.page
 * @returns
 */
export function exportExcelVisit(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelVisit`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（抽检工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成、7作废、8强制关单
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {number} params.spotCheck 抽检状态，0未抽检、1已抽检
 * @param {object} params.page
 * @returns
 */
export function exportExcelCheck(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelCheck`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（知会工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成、7作废、8强制关单
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {number} params.spotCheck 抽检状态，0未抽检、1已抽检
 * @param {object} params.page
 * @returns
 */
export function exportExcelNotify(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelNotify`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（地产工单）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {object} params.page
 * @returns
 */
export function exportExcelProperty(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelProperty`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（待审核）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {object} params.page
 * @returns
 */
export function exportExcelPendingReview(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelPendingReview`, params, {
        responseType: 'blob',
    });
}
/**
 * 导出Excel（已审核）
 * @param {object} params 管理后台 - 分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderNum 工单编号
 * @param {string} params.nameOrPhone 客户姓名/电话
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {string} params.orderProfessionalLine 条线
 * @param {string} params.orderChargePerson 负责人
 * @param {number} params.handleBy 工单处理人,0：本人、1：其他
 * @param {number} params.flowType 流程类型，0：强制关单、1：作废、2：投诉
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderState 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成
 * @param {string} params.orderSource 工单来源（字典项），来访、来电等
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报、2员工替报
 * @param {object} params.flowStartTimeStart 提交审核开始时间
 * @param {object} params.flowStartTimeEnd 提交审核结束时间
 * @param {object} params.taskingTimeStart 接单开始时间
 * @param {object} params.taskingTimeEnd 接单结束时间
 * @param {number} params.taskingTimely 是否及时接单，0否1是
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.score 得分，0视为未评价
 * @param {number} params.visitState 回访状态，1未回访、2已回访
 * @param {object} params.page
 * @returns
 */
export function exportExcelApproved(params: GetOrderPageParams): Promise<Blob> {
    return request.post(`/yfwy/order/exportExcelApproved`, params, {
        responseType: 'blob',
    });
}
// 参数接口
export interface GetOrderListToHandOnParams {
    // 项目CODE集合 */
    projectCode?: Record<string, unknown>[];
    // 负责人/移交人 */
    orderChargePerson?: string;
    // 工单编号 */
    orderNum?: string;
}
// 响应接口
export interface GetOrderListToHandOnRes {
    code: number;
    data: {
        // 主键 */
        id: number;
        // 工单编号 */
        orderNum: string;
        // 项目CODE */
        projectCode: string;
        // 项目名 */
        projectName: string;
        // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
        orderState: number;
        // 负责人 */
        orderChargePerson: string;
    }[];
    msg: string;
}
/**
 * 移交-获取工单列表
 * @param {object} params 管理后台 - 工单移交
 * @param {array} params.projectCode 项目CODE集合
 * @param {string} params.orderChargePerson 负责人/移交人
 * @param {string} params.orderNum 工单编号
 * @returns
 */
export function getOrderListToHandOn(params: GetOrderListToHandOnParams): Promise<GetOrderListToHandOnRes> {
    return request.post(`/yfwy/order/getOrderListToHandOn`, params);
}
// 参数接口
export interface GetUserListByHandOnParams {
    // 工单ID */
    id: number;
    // 项目CODE */
    projectCode: string;
}
// 响应接口
export interface GetUserListByHandOnRes {
    code: number;
    data: {
        // 用户ID */
        id: number;
        // 用户名 */
        name: string;
    }[];
    msg: string;
}
/**
 * 移交-获取工单交接人列表
 * @param {object} params 管理后台 - 工单移交
 * @param {number} params.id 工单ID
 * @param {string} params.projectCode 项目CODE
 * @returns
 */
export function getUserListByHandOn(params: any[]): Promise<GetUserListByHandOnRes> {
    return request.post(`/yfwy/order/getUserListByHandOn`, params);
}
// 参数接口
export interface OrderHandOnParams {
    // 接收人ID */
    userId: number;
    // 管理后台 - 工单移交 */
    orderList: {
        // 工单ID */
        id: Record<string, unknown>;
        // 项目CODE */
        projectCode: string;
    }[];
}
/**
 * 移交-工单移交
 * @param {object} params 管理后台 - 工单移交
 * @param {number} params.userId 接收人ID
 * @param {array} params.orderList 管理后台 - 工单移交
 * @returns
 */
export function orderHandOn(params: OrderHandOnParams): Promise<ResponseData<boolean>> {
    return request.post(`/yfwy/order/orderHandOn`, params);
}

/**
 * 判断是否在质保期（项目code），true是，false否
 * @param {string} projectCode
 * @returns
 */
export function checkWarranty(projectCode: string): Promise<ResponseData<boolean>> {
    return request.get(`/yfwy/order/checkWarranty/${projectCode}`);
}
/**
 * 知会工单状态变更
 * @param {string} id
 * @returns
 */
export function updateNotifyState(id: string): Promise<ResponseData<boolean>> {
    return request.get(`/yfwy/order/updateNotifyState/${id}`);
}

// 转地产
export function transferOrderDC(data: any) {
    return request.post(`/yfwy/order/transferOrderDC`, data);
}

// 获取房间部位信息
export function getRoomPart(orderId: string) {
    return request.post(`/yfwy/order/getRoomPart/${orderId}`);
}

// 驳回地产
export function rejectDC(data) {
    return request.post(`/yfwy/order/rejectDC`, data);
}

// 获取房间部位问题分类信息
export function getRoomPartClass(isPub) {
    return request.get(`/yfwy/order/repairPart?isPub=${isPub}`);
}
// 获取条线集合（工单分类中有的条线）
export function getOrderTxList() {
    return request.get(`/yfwy/order/getTxList`);
}
// 更新用户阅读标记
export function updateReadState(data) {
    return request.put(`/yfwy/order-flag/updateReadState`, data);
}
